當我們買了一堆櫃子或收納盒,那最後東西到底該被收到哪邊?
在居住空間中,樓層會有地下室、一樓、二樓等不同層並具有不同功能,地下室或一樓可以用來停車,二樓以上較常用來作為日常使用的空間。在軟體中也可以將架構劃分為多層,例如資料層、業務邏輯層和展示層,每一層分別負責不同的功能。
收納通常有基本原則,使用合適容器、抽屜或櫃子將相似物品放一起來隔離和保護特定物品,收納的關鍵目標是確保物品有組織地存放,以便容易找到和使用。同樣軟體架構分層也有基本原則,例如將功能相關放在同一層,不同層次的隔離和保護有助於減少錯誤擴散,並確保低耦合和高內聚並將功能模組化,使其易於開發、測試和維護。
在進行軟體開發時,最重要的事情是軟體會需要持續維護、發展、接收新功能、改進和修復錯誤,不同於房屋的買賣,程式會隨著時間過去和開發人員流動,讓維護比建立具有相同功能的全新軟體更困難。
程式的架構有點像蓋房子,主要分法可以分成三層資料層 (Data Layer)、業務邏輯層 (Domain Layer)、展現層 (Presentation Layer)
資料層負責資料的儲存、檢索和管理,並提供對資料的基本操作,它包括資料庫、文件系統、外部 API 或其他資料來源。
這一層關注資料的完整性、安全性和持久性,通常使用資料庫管理系統 (如 MySQL、PostgreSQL、MongoDB 等) 來儲存資料,提供了資料操作的基本 CRUD(創建、讀取、更新、刪除)操作。
資料層通常透過業務邏輯層來操作,以進行檢索和儲存資料。
業務邏輯層是程式的核心,負責管理程式的核心業務邏輯、流程控制。
業務邏輯層位於資料層和展現層之間,可以包含許多不同的模組和服務,以實現程式的具體功能,確保資料在不同層級之間的正確傳遞和處理。
業務邏輯層通常訪問資料層以檢索和更新資料,同時提供程式界面 (API) 供展現層使用。
展現層通常是最終用戶與程式互動的界面,負責將資料和程式功能呈現給最終用戶,包括用戶界面 (UI)、網頁、App 等,這一層關注用戶體驗、界面設計和互動。
展現層負責將業務邏輯提供的資料呈現給用戶,並可以接收用戶的輸入並將其傳遞給業務邏輯層,同時顯示從業務邏輯層獲取的資料。
任何熟悉該領域的開發人員都應該能夠
目標是當程式在做修改的時候,業務邏輯應該要能夠穩定的被持續測試
回到怎麼選擇套件的問題,在程式撰寫上我們要要注意新撰寫的程式對架構的影響
以剛剛的三層式架構來說,也有人把三層變體成一圈一圈的洋蔥式架構,並針對功能分層製作,每一層都有自己的焦點,該架構的黃金法則是:
內圈中任何事物都無法了解外圈中的任何事物。
其中包括函數、類別、變數或任何其他命名的軟體實體。
Robert Cecil Martin
那該怎麼寫出好的架構呢? 下一篇文章小編會繼續帶大家看下去。